package cn.kgcshiro;

import cn.kgcshiro.realm.CustomerRealm;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.subject.Subject;

/*
*  shiro 完成用户信息的认证操作
* */
public class App {

    public static void main( String[] args ) {

        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        //给安全管理器设置realm对象
        //defaultSecurityManager.setRealm(new IniRealm("classpath:user.ini"));

        defaultSecurityManager.setRealm(new CustomerRealm());
        //给安全管理工具类 设置安全管理器
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        // 获取认证主体  安全管理工具类
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken  usernamePasswordToken = new UsernamePasswordToken("tom","12345");
        // 用户认证   如果没有抛出异常 则认证通过
        try {
            subject.login(usernamePasswordToken);
        } catch (IncorrectCredentialsException e) {
            e.printStackTrace();
            System.out.println("==========密码错误==========");
        }catch (UnknownAccountException e){
            e.printStackTrace();
            System.out.println("===========用户名错误==========");
        }

        System.out.println("=============用户认证通过================");

    }
}
